/**
 * Copyright (C) 2013-2014 the original author or authors.
 */
package com.foreveross.bsl.system.application;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.foreveross.bsl.system.application.vo.CloudFunctionVo;

/**
 * 云服务管理接口
 * 
 * @author Wangyi
 * @version v1.0
 * 
 * @date 2013-7-4
 * 
 */
@Path(value = "/cloudFunctions")
public interface CloudFunctionService {

	@POST
	@Path("/")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	void add(CloudFunctionVo cloudFunc);

	@PUT
	@Path("/")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	void update(CloudFunctionVo cloudFunc);

	@DELETE
	@Path("/{id}")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	void delete(@PathParam("id") String cloudId);

	@POST
	@Path("/enable/")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	void enable(@QueryParam("cloudId") String cloudId,
			@QueryParam("enabled") boolean enabled);

	@GET
	@Path("/remove/{cloudId}/{appId}")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	void removeLink(@PathParam("cloudId") String cloudId,
			@PathParam("appId") String appId);

	@GET
	@Path("/")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	List<CloudFunctionVo> findAll();

	@GET
	@Path("/{id}")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	CloudFunctionVo getById(@PathParam("id") String id);
}
